package kr.hkit.powerjava.chapter22.collection;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;

public class ArrayListTest {
	public static void main(String[] args) {
		
		ArrayList<String> arList = new ArrayList<>();
		
		arList.add("MILK");
		
		ArrayList<String> subList = new ArrayList<>();
		subList.add("BREAD"); 
		subList.add("BUTTER");
		
		arList.addAll(subList); //subList 자체를 addAll가능
		arList.add(1, "APPLE"); //인덱스로 추가
		

	
		for (String str: arList) {
			System.out.println(str);
		}
		
		
		Collections.sort(arList);
		System.out.println("+++++++++++++");
		for (String str: arList) {
			System.out.println(str);
		}
		
		
		System.out.println("BREAD 가 존재? " + arList.contains("BREAD"));
		
		Object[] arr = arList.toArray(); 
		for (int i=0; i<arr.length ; i++) {
			System.out.print(arr[i] + "\t");
		}
		System.out.println();
		
		
		String[] strArr = new String [arList.size()]; //생성하고 넣어라 
		arList.toArray(strArr); //이 메소드에서 하나씩 꺼내서 집어 넣어줌?
		for (int i = 0; i < strArr.length; i++) {
			System.out.print(strArr[i] + "\t");
		}
		System.out.println();
		
		arList.clear();
		
		System.out.println("Empty? " + arList.isEmpty()); //비어있으면 true 반환
		
		boolean result = arList.contains("Bread"); //대소문자 구분함
		//배열안에 들어있는 원소 확인
		System.out.println(result);
		
		arList.remove(1); //인덱스로 삭제
		arList.remove("BREAD"); //Object 클래스는 equals 오버라이딩 되 있어서 그냥 이름으로도 삭제 가능		
		// 사용자가 만든 클래스는 이렇게 쓰려면 equals 오버라이딩 하고해야해 
		
		
//		arList.clear(); //다 삭제 
		
		
		
		System.out.println("=========");
		for(int i=0; i<arList.size(); i++) {
			System.out.println(arList.get(i));
		}
	}
}
